<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS实现继承的几种方式</title>
</head>
<body>
<script>
    //  1:借用构造函数实现继承
    //  缺点：Child1无法继承Parent1的原型对象，并没有真正的实现继承（部分继承）
    function Parent1(){
        this.name = "parent1"
    }
    function Child1(){
        Parent1.call(this);
        this.type = "child1";
    }
    //2:借用原型链实现继承
    //缺点：原型对象的属性是共享的
    function Parent2(){
        this.name = "parent2";
        this.play = [1,2,3];
    }
    function Child2(){
        this.type = "child2";
    }
    Child2.prototype = new Parent2();
    //3:组合式继承
    function Parent3(){
        this.name = "parent3";
        this.play = [1,2,3];
    }
    function Child3(){
        Parent3.call(this);
        this.type = "child3";
    }
    Child3.prototype = Object.create(Parent3.prototype);
    Child3.prototype.constructor = Child3;
</script>
</body>
</html>